/**
 * 公共模块
 * by ZL 2018/11/27 重构
 */
export default {
  /**
   * 取得xml节点属性值
   * @param {object} node xml节点
   * @param {string} name 属性名
   * @param {string} type 数据类型
   */
  getAttribute(node, name, type) {
    const o = node.attributes.getNamedItem(name);
    if (o) {
      switch (type) {
        case 'int':
          return parseInt(o.value);
          // break;
        case 'float':
          return parseFloat(o.value);
          // break;
        case 'bool':
          return o.value === '0' ? !1 : true;
          // break;
        case 'bool2':
          return o.value === 'false' ? !1 : true;
        case 'rgb':
          return 'rgb(' + o.value + ')';
          // break;
        case 'alpha':
          return parseInt(o.value) / 255;
          // break;
        case 'point':
          const poi = o.value.split(',');
          if (poi.length === 0 || poi[0] === '') {
            return null;
          } else {
            return {
              x: parseFloat(poi[0]),
              y: parseFloat(poi[1])
            };
          }
        case 'tfr':
          const rs = { rotation: 0, scale: [1.0, 1.0] };
          let s = o.value;
          let idx = s.indexOf('rotate(');
          if (idx >= 0) {
            s = s.substr(idx + 7);
            // 要把角度转换成弧度***********
            rs.rotation = 2 * Math.PI - Math.PI / 180 * parseInt(s.substring(0, s.indexOf(')')));
          }
          s = o.value;
          idx = s.indexOf('scale(');
          if (idx >= 0) {
            s = s.substr(idx + 6);
            s = s.substring(0, s.indexOf(')')).split(',');
            rs.scale = [parseFloat(s[0]), parseFloat(s[1])];
          }
          return rs;
          // break;
        default:
          return o.value;
      }
    } else {
      return null;
    }
  },
  /**
   * 线形lineDash
   * @param {object} node xml节点
   * @param {string} name 属性名
   */
  getLineStyle (node, name) {
    let lineStyle = null;
    const type = this.getAttribute(node, name, 'int');
    switch (type) {
      case 0:
      case 1:
        // 0 不显示线条，在stroke上处理
        // 直线为null
        break;
      case 2:
        lineStyle = [4, 3];
        break;
      case 3:
        lineStyle = [1, 3];
        break;
      case 4:
        lineStyle = [4, 3, 1, 3];
        break;
      case 5:
        lineStyle = [8, 3, 1, 3, 1, 3];
        break;
      default:
    }
    return lineStyle;
  },
  getModal(type){
    // let 
    // switch (1) {
    //   case value:
        
    //     break;
    
    //   default:
    //     break;
    // }
  }
};
